<?xml version="1.0" encoding="UTF-8"?>
<!-- <cfsetting enablecfoutputonly="true" /> -->
<!DOCTYPE mach-ii PUBLIC 
	"-//Mach-II//DTD Mach-II Configuration 1.5.0//EN"
	"http://www.mach-ii.com/dtds/mach-ii_1_5_0.dtd">
<!--
Copyright: (c) 2006 The MachBlog Authors
Authors: Matt Woodward (mpwoodward@gmail.com) & Peter J. Farrell (pjf@maestropublishing.com)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. 
You may obtain a copy of the License at 

http://www.apache.org/licenses/LICENSE-2.0 

Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
See the License for the specific language governing permissions and 
limitations under the License.

$Id: mach-ii.xml.cfm 1198 2007-07-20 14:23:26Z mpwoodward $

Notes:
-->
<mach-ii version="1.5">
	<!-- INCLUDES -->
	<includes>
		<!-- application-specific properties -->
		<include file="./properties.xml.cfm" />
	</includes>
	
	<!-- PROPERTIES -->
	<properties>
		<!-- MACH-II REQUIRED -->
		<property name="applicationRoot" value="/"/>
		<property name="defaultEvent" value="showHome"/>
		<property name="eventParameter" value="event"/>
		<property name="parameterPrecedence" value="form"/>
		<property name="maxEvents" value="10"/>
		<property name="exceptionEvent" value="exception"/>
	</properties>

	<!-- EVENT-FILTERS -->
	<event-filters>
		<event-filter name="checkLogin" type="org.machblog.filters.CheckLogin"/>
	</event-filters>

	<!-- LISTENERS -->
	<listeners>
		<listener name="aggregatorListener" type="org.machblog.listeners.AggregatorListener" />
		<listener name="blogListener" type="org.machblog.listeners.BlogListener" />
		<listener name="captchaListener" type="org.machblog.listeners.CaptchaListener"/>
		<listener name="categoryListener" type="org.machblog.listeners.CategoryListener"/>
		<listener name="commentListener" type="org.machblog.listeners.CommentListener"/>
		<listener name="entryListener" type="org.machblog.listeners.EntryListener"/>
		<listener name="exceptionListener" type="org.machblog.listeners.ExceptionListener"/>
		<listener name="loginListener" type="org.machblog.listeners.LoginListener"/>
		<listener name="rssListener" type="org.machblog.listeners.RssListener" />
		<listener name="subscriberListener" type="org.machblog.listeners.SubscriberListener" />
		<listener name="trackbackListener" type="org.machblog.listeners.TrackbackListener" />
		<listener name="userListener" type="org.machblog.listeners.UserListener"/>
	</listeners>
	
	<!-- EVENT-HANDLERS -->
	<event-handlers>
		<!-- BASIC/PUBLIC EVENTS -->
		<event-handler event="showAbout" access="public">
			<view-page name="about" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showContactForm" access="public">
			<event-arg name="includeqForms" value="true" />
			<notify listener="captchaListener" method="getHashReference" resultArg="captcha"/>
			<view-page name="captchaSnip" contentArg="layout.captchaSnip" />
			<view-page name="contact" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processContactForm" access="public">
			<notify listener="captchaListener" method="validateCaptcha"/>
			<notify listener="blogListener" method="processContactForm" />
		</event-handler>
		
		<event-handler event="showHome" access="public">
			<notify listener="subscriberListener" method="getActiveSubscribers" resultArg="subscribers" />
			<notify listener="entryListener" method="notifySubscribers" />
			<notify listener="entryListener" method="getEntriesForHomePage" resultArg="entries" />
			<view-page name="home" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showHome_redirect" access="public">
			<redirect event="showHome" args="message" />
		</event-handler>
		
		<!-- entries -->
		<event-handler event="showEntry" access="public">
			<notify listener="entryListener" method="getEntry" resultArg="entry" />
			<notify listener="entryListener" method="incrementViews" />
			<view-page name="entry" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showEntriesByCategory" access="public">
			<notify listener="entryListener" method="getEntriesByCategory" resultArg="entries" />
			<view-page name="home" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showEntriesByMonth" access="public">
			<notify listener="entryListener" method="getEntriesByMonth" resultArg="entries" />
			<view-page name="home" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="searchEntries" access="public">
			<notify listener="entryListener" method="searchEntries" resultArg="entries" />
			<view-page name="home" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showSendEntryToFriend" access="public">
			<event-arg name="includeqForms" value="true" />
			<notify listener="captchaListener" method="getHashReference" resultArg="captcha"/>
			<notify listener="entryListener" method="getEntryTitleById" resultArg="entryTitle" />
			<view-page name="captchaSnip" contentArg="layout.captchaSnip" />
			<view-page name="sendEntryToFriend" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processSendEntryToFriend" access="public">
			<notify listener="captchaListener" method="validateCaptcha"/>
			<notify listener="entryListener" method="processSendEntryToFriend" />
		</event-handler>
		
		<!-- rss feeds -->
		<event-handler event="showBlogRss" access="public">
			<notify listener="rssListener" method="getBlogRss" resultArg="rss" />
			<view-page name="rss" />
		</event-handler>
		
		<event-handler event="showCategoryRss" access="public">
			<notify listener="rssListener" method="getCategoryRss" resultArg="rss" />
			<view-page name="rss" />
		</event-handler>
		
		<!-- comments -->
		<event-handler event="showComments" access="public">
			<event-arg name="includeqForms" value="true" />
			<notify listener="captchaListener" method="getHashReference" resultArg="captcha"/>
			<notify listener="commentListener" method="getComment" resultArg="comment" />
			<notify listener="commentListener" method="getCommentsByEntryId" resultArg="comments" />
			<view-page name="captchaSnip" contentArg="layout.captchaSnip" />
			<view-page name="comments" contentArg="layout.content" />
			<execute subroutine="popupTemplate" />
		</event-handler>
		<event-handler event="showComments_error" access="private">
			<event-arg name="includeqForms" value="true" />
			<notify listener="captchaListener" method="getHashReference" resultArg="captcha" />
			<notify listener="commentListener" method="getCommentsByEntryId" resultArg="comments" />
			<view-page name="captchaSnip" contentArg="layout.captchaSnip" />
			<view-page name="comments" contentArg="layout.content" />
			<execute subroutine="popupTemplate" />
		</event-handler>
		
		<event-handler event="processCommentForm" access="public">
			<event-bean name="comment" type="org.machblog.comment.Comment" 
					fields="commentId,entryId,name,email,url,comment,isSubscribed,subscriberEmailSent" />
			<notify listener="captchaListener" method="validateCaptcha"/>
			<notify listener="commentListener" method="processCommentForm"/>
		</event-handler>
		
		<event-handler event="processCommentSubscriptionForm" access="public">
			<event-bean name="comment" type="org.machblog.comment.Comment" 
					fields="entryId,email" />
			<notify listener="commentListener" method="processCommentSubscriptionForm" />
		</event-handler>
		
		<event-handler event="unsubscribeFromComments" access="public">
			<notify listener="commentListener" method="unsubscribeFromComments" />
		</event-handler>
		
		<!-- trackbacks -->
		<event-handler event="showTrackbacks" access="public">
			<event-arg name="includeqForms" value="true"/>
			<notify listener="trackbackListener" method="getTrackback" resultArg="trackback"/>
			<notify listener="trackbackListener" method="getTrackbacks" resultArg="trackbacks"/>
			<view-page name="captchaSnip" contentArg="layout.captchaSnip"/>
			<view-page name="trackbacks" contentArg="layout.content"/>
			<announce event="popupTemplate" copyEventArgs="true"/>
		</event-handler>
		
		<event-handler event="processTrackbackForm" access="public">
			<event-bean name="trackback" type="org.machblog.trackback.Trackback" 
					fields="trackbackId,trackbackUrl,trackbackTitle,trackbackBlogName,trackbackExcerpt,entryId" />
			<notify listener="captchaListener" method="validateCaptcha"/>
			<notify listener="trackbackListener" method="processTrackbackForm"/>
		</event-handler>
		
		<!-- subscribe -->
		<event-handler event="processSubscribeForm" access="public">
			<event-bean name="subscriber" type="org.machblog.subscriber.Subscriber" 
					fields="email" />
			<notify listener="subscriberListener" method="processSubscribeForm" />
		</event-handler>
		
		<event-handler event="verifyBlogSubscription" access="public">
			<notify listener="subscriberListener" method="verifyBlogSubscription" />
			<view-page name="blogSubscriptionVerification" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<!-- ADMIN VIEWS/EVENTS -->
		<!-- login/logout related -->
		<event-handler event="showLoginForm" access="public">
			<event-arg name="includeqForms" value="true" />
			<view-page name="loginForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processLoginAttempt" access="public">
			<notify listener="loginListener" method="processLoginAttempt" />
		</event-handler>
		
		<event-handler event="loginSucceeded" access="private">
			<redirect event="showAdminMenu" />
		</event-handler>
		
		<event-handler event="loginFailed" access="private">
			<redirect event="showLoginForm" args="message" />
		</event-handler>
		
		<event-handler event="logout">
			<notify listener="loginListener" method="logout" />
		</event-handler>
		
		<event-handler event="logoutSucceeded">
			<redirect event="showLoginForm" args="message" />
		</event-handler>
		
		<event-handler event="showForgotPassword">
			<event-arg name="includeqForms" value="true" />
			<view-page name="forgotPassword" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processForgotPassword">
			<notify listener="loginListener" method="processForgotPasswordForm" />
		</event-handler>
		
		<!-- main menu -->
		<event-handler event="showAdminMenu" access="public">
			<filter name="checkLogin" />
			<notify listener="commentListener" method="getCommentCountByDate" resultArg="todaysCommentCount" />
			<notify listener="trackbackListener" method="getTodaysTrackbackCount" resultArg="todaysTrackbackCount" />
			<notify listener="entryListener" method="getCurrentUserEntryCount" resultArg="userEntryCount" />
			<notify listener="entryListener" method="getEntryCount" resultArg="entryCount" />
			<notify listener="subscriberListener" method="getSubscriptionCount" resultArg="blogSubscriptionCount" />
			<notify listener="commentListener" method="getSubscriptionCount" resultArg="commentSubscriptionCount" />
			<notify listener="commentListener" method="getTotalCommentCount" resultArg="totalCommentCount" />
			<notify listener="blogListener" method="getCurrentUserDaysBlogging" resultArg="userDaysBlogging" />
			<notify listener="blogListener" method="getDaysBlogging" resultArg="totalDaysBlogging" />
			<view-page name="adminHome" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<!-- aggregator related -->
		<event-handler event="showAggregatorAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="aggregatorListener" method="getAllAggregators" resultArg="aggregators" />
			<view-page name="aggregatorAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>

		<event-handler event="showAggregatorForm" access="public">
			<filter name="checkLogin"/>
			<event-arg name="includeqForms" value="true"/>
			<notify listener="aggregatorListener" method="getAggregator" resultArg="aggregator"/>
			<view-page name="aggregatorForm" contentArg="layout.content"/>
			<execute subroutine="mainLayout" />
		</event-handler>
		<event-handler event="showAggregatorForm_errors" access="private">
			<view-page name="aggregatorForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		<event-handler event="showAggregatorForm_redirect" access="private">
			<redirect event="showAggregatorForm" args="message"/>
		</event-handler>
		<event-handler event="showAggregatorAdmin_redirect" access="private">
			<redirect event="showAggregatorAdmin" args="message" />
		</event-handler>	
		<event-handler event="processAggregatorForm" access="public">
			<filter name="checkLogin"/>
			<event-mapping event="pass" mapping="showAggregatorAdmin_redirect"/>
			<event-mapping event="fail" mapping="showAggregatorForm_errors"/>
			<event-bean name="aggregator" type="org.machblog.aggregator.Aggregator" 
				fields="aggregatorId,aggregatorName,aggregatorDescription,aggregatorUrl,pingUrl,autoPing"/>
			<notify listener="aggregatorListener" method="processAggregatorForm"/>
		</event-handler>
		
		<event-handler event="deleteAggregator" access="public">
			<filter name="checkLogin" />
			<event-mapping event="pass" mapping="deleteAggregator_redirect"/>
			<event-mapping event="fail" mapping="deleteAggregator_redirect"/>
			<event-bean name="aggregator" type="org.machblog.aggregator.Aggregator" 
				fields="aggregatorId" />
			<notify listener="aggregatorListener" method="deleteAggregator" />
		</event-handler>
		<event-handler event="deleteAggregator_redirect" access="private">
			<redirect event="showAggregatorAdmin" />
		</event-handler>
		
		<event-handler event="pingAggregator" access="public">
			<filter name="checkLogin" />
			<notify listener="aggregatorListener" method="pingAggregator" />
		</event-handler>
		
		<!-- blog entry related -->
		<event-handler event="showBlogEntryAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="entryListener" method="getAllEntries" resultArg="entries" />
			<view-page name="blogEntryAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		<event-handler event="showBlogEntryAdmin_redirect" access="public">
			<!--<redirect event="showBlogEntryAdmin_redirect" persist="true" />-->
			<redirect event="showBlogEntryAdmin" persist="true" />
		</event-handler>
		
		<event-handler event="showBlogEntryForm" access="public">
			<filter name="checkLogin" />
			<event-arg name="includeCalendar" value="true" />
			<event-arg name="includeqForms" value="true" />
			<notify listener="entryListener" method="getEntry" resultArg="entry" />
			<notify listener="categoryListener" method="getActiveCategories" resultArg="categories" />
			<view-page name="blogEntryForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		<event-handler event="showBlogEntryForm_error" access="private">
			<filter name="checkLogin" />
			<event-arg name="includeCalendar" value="true" />
			<event-arg name="includeqForms" value="true" />
			<notify listener="categoryListener" method="getActiveCategories" resultArg="categories" />
			<view-page name="blogEntryForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processBlogEntryForm" access="public">
			<filter name="checkLogin" />
			<event-bean name="entry" type="org.machblog.entry.Entry" 
				fields="entryId,title,body,moreBody,allowComments,allowTrackbacks" />
			<notify listener="subscriberListener" method="getSubscribers" resultArg="subscribers" />
			<notify listener="entryListener" method="processBlogEntryForm" />
		</event-handler>
		
		<event-handler event="deleteBlogEntry" access="public">
			<filter name="checkLogin" />
			<notify listener="entryListener" method="deleteBlogEntry" />
		</event-handler>
		
		<event-handler event="deleteBlogEntrySucceeded" access="public">
			<filter name="checkLogin" />
			<redirect event="showBlogEntryAdmin" args="message" />
		</event-handler>
		
		<!-- category related -->
		<event-handler event="showCategoryAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="categoryListener" method="getAllCategories" resultArg="categories" />
			<view-page name="categoryAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showCategoryForm" access="public">
			<filter name="checkLogin"/>
			<event-arg name="includeqForms" value="true"/>
			<event-bean name="category" type="org.machblog.category.Category" 
				fields="categoryId,categoryName,numPosts"/>
			<notify listener="categoryListener" method="getCategory" resultArg="category"/>
			<view-page name="categoryForm" contentArg="layout.content"/>
			<execute subroutine="mainLayout" />
		</event-handler>
		<event-handler event="processCategoryForm" access="public">
			<filter name="checkLogin"/>
			<event-bean name="category" type="org.machblog.category.Category" 
				fields="categoryId,categoryName,numPosts"/>
			<notify listener="categoryListener" method="processCategoryForm"/>
		</event-handler>
		<event-handler event="showCategoryForm_error" access="private">
			<filter name="checkLogin" />
			<event-arg name="includeqForms" value="true" />
			<view-page name="categoryForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="deleteCategory" access="public">
			<filter name="checkLogin" />
			<event-mapping event="pass" mapping="deleteCategory_redirect"/>
			<event-mapping event="fail" mapping="deleteCategory_redirect"/>
			<event-bean name="category" type="org.machblog.category.Category" 
				fields="categoryId" />
			<notify listener="categoryListener" method="deleteCategory" />
		</event-handler>
		
		<!-- comment related -->
		<event-handler event="showCommentAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="commentListener" method="getAllComments" resultArg="comments" />
			<view-page name="commentAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="toggleCommentDisplay" access="public">
			<filter name="checkLogin" />
			<notify listener="commentListener" method="toggleCommentDisplay" />
		</event-handler>
		
		<event-handler event="toggleIpBlock" access="public">
			<filter name="checkLogin" />
			<notify listener="commentListener" method="toggleIpBlock" />
		</event-handler>
		
		<event-handler event="deleteComments" access="public">
			<filter name="checkLogin" />
			<notify listener="commentListener" method="deleteComments" />
		</event-handler>
		
		<!-- trackback related -->
		<event-handler event="showTrackbackAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="trackbackListener" method="getRecentTrackbacks" resultArg="trackbacks" />
			<view-page name="trackbackAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="toggleTrackbackDisplay" access="public">
			<filter name="checkLogin" />
			<notify listener="trackbackListener" method="toggleTrackbackDisplay" />
		</event-handler>
		
		<event-handler event="deleteTrackbacks" access="public">
			<filter name="checkLogin" />
			<notify listener="trackbackListener" method="deleteTrackbacks" />
		</event-handler>
		
		<!-- user related -->
		<event-handler event="showUserAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="userListener" method="getAllUsers" resultArg="users" />
			<view-page name="userAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showUserForm" access="public">
			<filter name="checkLogin" />
			<event-arg name="includeqForms" value="true" />
			<notify listener="userListener" method="getUserById" resultArg="user" />
			<view-page name="userForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processUserForm" access="public">
			<filter name="checkLogin" />
			<event-bean name="user" type="org.machblog.user.User" 
					fields="userId,email,password,firstName,lastName" />
			<notify listener="userListener" method="processUserForm" />
		</event-handler>
		
		<event-handler event="toggleUserStatus" access="public">
			<filter name="checkLogin" />
			<notify listener="userListener" method="toggleUserStatus" />
		</event-handler>
		
		<!-- subscription related -->
		<event-handler event="showSubscriptionAdmin" access="public">
			<filter name="checkLogin" />
			<notify listener="subscriberListener" method="getSubscribers" resultArg="subscribers" />
			<view-page name="subscriptionAdmin" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="showSubscriberForm" access="public">
			<filter name="checkLogin" />
			<event-arg name="includeqForms" value="true" />
			<notify listener="subscriberListener" method="getSubscriber" resultArg="subscriber" />
			<view-page name="subscriberForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processSubscriberForm" access="public">
			<filter name="checkLogin" />
			<event-bean name="subscriber" type="org.machblog.subscriber.Subscriber" 
					fields="subscriberId,email" />
			<notify listener="subscriberListener" method="processSubscriberForm" />
		</event-handler>
		
		<event-handler event="deleteSubscriber" access="public">
			<filter name="checkLogin" />
			<event-bean name="subscriber" type="org.machblog.subscriber.Subscriber" 
					fields="subscriberId" />
			<notify listener="subscriberListener" method="deleteSubscriber" />
		</event-handler>
		
		<event-handler event="showEmailSubscribersForm" access="public">
			<filter name="checkLogin" />
			<event-arg name="includeqForms" value="true" />
			<notify listener="subscriberListener" method="getSubscriptionCount" resultArg="subscriberCount" />
			<view-page name="emailSubscribersForm" contentArg="layout.content" />
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="processEmailSubscribersForm" access="public">
			<filter name="checkLogin" />
			<notify listener="subscriberListener" method="processEmailSubscribersForm" />
		</event-handler>
		
		<!-- EXCEPTION EVENTS -->
		<event-handler event="exception" access="private">
			<!-- <event-mapping event="development" mapping="exception.development"/>
			<event-mapping event="productionDefault" mapping="exception.productionDefault"/>
			<event-mapping event="productionNoEventHandler" mapping="exception.productionNoEventHandler"/>
			<notify listener="exceptionListener" method="doException"/> -->
			<view-page name="exception.development" />
		</event-handler>

		<event-handler event="exception.development" access="private">
			<view-page name="exception.development" contentArg="layout.content"/>
			<execute subroutine="mainLayout" />
		</event-handler>

		<event-handler event="exception.productionDefault" access="private">
			<view-page name="exception.productionDefault" contentArg="layout.content"/>
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<event-handler event="exception.productionNoEventHandler" access="private">
			<view-page name="exception.productionNoEventHandler" contentArg="layout.content"/>
			<execute subroutine="mainLayout" />
		</event-handler>
		
		<!-- SYS EVENTS -->
		<event-handler event="sys.captcha.displayImage" access="public">
			<notify listener="captchaListener" method="createCaptchaFromHashReference" resultArg="captcha"/>
			<view-page name="sys.captcha.displayImage"/>
		</event-handler>
	</event-handlers>

	<!-- SUBROUTINES -->
	<subroutines>
		<subroutine name="mainLayout">
			<notify listener="categoryListener" method="getActiveCategories" resultArg="categories" />
			<view-page name="layout.header" contentArg="layout.header"/>
			<view-page name="layout.navMenu" contentArg="layout.navMenu"/>
			<view-page name="layout.categories" contentArg="layout.categories" />
			<view-page name="layout.archives" contentArg="layout.archives" />
			<view-page name="layout.subscribePod" contentArg="layout.subscribePod" />
			<view-page name="layout.adminMenu" contentArg="layout.adminMenu"/>
			<view-page name="layout.footer" contentArg="layout.footer"/>
			<view-page name="layout.analytics" contentArg="layout.analytics"/>
			<view-page name="layout.snapPreview" contentArg="layout.snapPreview" />
			<view-page name="layout.deliciousPod" contentArg="layout.deliciousPod" />
			<view-page name="layout.mainTemplate"/>
		</subroutine>
		
		<subroutine name="popupTemplate">
			<view-page name="layout.analytics" contentArg="layout.analytics" />
			<view-page name="layout.popupTemplate" />
		</subroutine>
	</subroutines>
	
	<!-- PAGE-VIEWS -->
	<page-views>		
		<!-- basic/public views -->
		<page-view name="about" page="/views/about.cfm"/>
		<page-view name="blogSubscriptionVerification" page="/views/blogSubscriptionVerification.cfm" />
		<page-view name="captchaSnip" page="/views/captchaSnip.cfm"/>
		<page-view name="comments" page="/views/comments.cfm"/>
		<page-view name="contact" page="/views/contact.cfm"/>
		<page-view name="entry" page="/views/entry.cfm"/>
		<page-view name="home" page="/views/home.cfm"/>
		<page-view name="loginForm" page="/views/loginForm.cfm"/>
		<page-view name="forgotPassword" page="/views/forgotPassword.cfm" />
		<page-view name="rss" page="/views/rss.cfm"/>
		<page-view name="sendEntryToFriend" page="/views/sendEntryToFriend.cfm" />
		<page-view name="trackbacks" page="/views/trackbacks.cfm"/>
		
		<!-- admin views -->
		<page-view name="adminHome" page="/views/admin/adminHome.cfm" />
		<page-view name="aggregatorAdmin" page="/views/admin/aggregatorAdmin.cfm"/>
		<page-view name="aggregatorForm" page="/views/admin/aggregatorForm.cfm"/>
		<page-view name="blogEntryAdmin" page="/views/admin/blogEntryAdmin.cfm"/>
		<page-view name="blogEntryForm" page="/views/admin/blogEntryForm.cfm"/>
		<page-view name="categoryAdmin" page="/views/admin/categoryAdmin.cfm"/>
		<page-view name="categoryForm" page="/views/admin/categoryForm.cfm"/>
		<page-view name="commentAdmin" page="/views/admin/commentAdmin.cfm"/>
		<page-view name="emailSubscribersForm" page="/views/admin/emailSubscribersForm.cfm" />
		<page-view name="subscriberForm" page="/views/admin/subscriberForm.cfm" />
		<page-view name="subscriptionAdmin" page="/views/admin/subscriptionAdmin.cfm" />
		<page-view name="trackbackAdmin" page="/views/admin/trackbackAdmin.cfm"/>
		<page-view name="userAdmin" page="/views/admin/userAdmin.cfm"/>
		<page-view name="userForm" page="/views/admin/userForm.cfm"/>
		
		<!-- exception views -->
		<page-view name="exception.development" page="/views/exception/development.cfm"/>
		<page-view name="exception.productionDefault" page="/views/exception/productionDefault.cfm"/>
		<page-view name="exception.productionNoEventHandler" page="/views/exception/productionNoEventHandler.cfm"/>
		
		<!-- layout views -->
		<page-view name="layout.adminMenu" page="/views/layout/adminMenu.cfm"/>
		<page-view name="layout.analytics" page="/views/layout/analytics.cfm"/>
		<page-view name="layout.archives" page="/views/layout/archives.cfm" />
		<page-view name="layout.categories" page="/views/layout/categories.cfm"/>
		<page-view name="layout.deliciousPod" page="/views/layout/deliciousPod.cfm" />
		<page-view name="layout.footer" page="/views/layout/footer.cfm"/>
		<page-view name="layout.header" page="/views/layout/header.cfm"/>
		<page-view name="layout.mainTemplate" page="/views/layout/mainTemplate.cfm"/>
		<page-view name="layout.navMenu" page="/views/layout/navMenu.cfm"/>
		<page-view name="layout.popupTemplate" page="/views/layout/popupTemplate.cfm"/>
		<page-view name="layout.snapPreview" page="/views/layout/snapPreview.cfm" />
		<page-view name="layout.subscribePod" page="/views/layout/subscribePod.cfm" />
		<page-view name="layout.threeColumnTemplate" page="/views/layout/threeColumnTemplate.cfm"/>
		
		<!-- sys views -->
		<page-view name="sys.captcha.displayImage" page="/views/sys/captcha/displayImage.cfm"/>
	</page-views>

	<!-- PLUGINS -->
	<plugins>
		<plugin name="coldSpringPlugin" type="coldspring.machii.ColdspringPlugin">
			<parameters>
				<parameter name="beanFactoryPropertyName" value="serviceFactory"/>
				<parameter name="configFilePropertyName" value="coldspringConfigFile"/>
				<parameter name="configFilePathIsRelative" value="true"/>
				<parameter name="resolveMachiiDependencies" value="true"/>
			</parameters>
		</plugin>
		
		<plugin name="appVars" type="org.machblog.plugins.AppVars" />
		<plugin name="checkForUser" type="org.machblog.plugins.CheckForUser" />

		<plugin name="TracePlugin" type="MachII.plugins.TracePlugin">
			<parameters>
				<parameter name="traceMode" value="none"/>
				<parameter name="displayCommented" value="false"/>
				<parameter name="highlightLongTimings" value="100"/>
			</parameters>
		</plugin>
	</plugins>

</mach-ii>